這篇文章主要會提到資料分組
會繼續利用kaggle上的開源資料進行更多的pandas練習
Kaggle: Your Machine Learning and Data Science Community
看的課程還是Coursera上的 Introduction to Data Science in Python
Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera
練習是利用上述課程裡教的搭配以前在學校學過的知識
並且使用kaggle實際的資料檔
整理出來的筆記
現在要練習資料的分組
在數據分析中,其實比起針對一筆一筆的資料分析
更方便的做法是將資料進行分組後
在針對不同組別類型進行下一步的資料分析
像是性別、城市、國家、屬性等等
這是從kaggle上找到一筆關於學生成績的紀錄
方便進行分組的比較
先把這筆資料讀進來
看看資料的架構長怎樣
import pandas as pd
df = pd.read_csv("StudentsPerformance.csv", index_col=0)
df.head()
可以看到資料有分成性別、組別、教育類型、午餐、考試準備的課程,還有不同考試的分數
接著練習使用.groupby()
進行分組
假如現在想用性別把所有資料分成兩組
df.groupby("gender")
由於單純用groupby會回傳內存地址,並不好解讀,所以放到list裡
list(df.groupby("gender"))
可以看到使用groupby之後,資料被依照性別分成了兩個組別回傳
如果依照種族、學歷等等,也會依照同樣的形式將所有資料分類
接下來就可以在分組後面接上聚合函數進行aggregation的聚合操作
假如現在想計算男生女生在各個學科裡的平均分數
df.groupby("gender").mean()
可以看到groupby搭配聚合函數後
很快速的算出不同性別在不同學科的平均數
還有很多的聚合函數
像是
最大值.max()
、最小值.min()
、中位數medium.()
、標準差std.()
、變異數var.()
print("不同組別的最大值", df.groupby("race/ethnicity").max())
可以看到回傳的資料根據group A到group E分別在不同欄位裡的最大值
如果想針對不同欄位分別求不同的值,
或是只想知道特定幾個欄位
可以利用dictionary指定想要的欄位跟想要計算的聚合函數
df.groupby("race/ethnicity").agg({"math score":"mean","reading score":"std"})
今天練習的資料操作搭配到聚合函數
pandas還有強大的資料運算處理能力
已經完美設計好的套件
可以更快速地處理這篇學到的聚合函數,並且整合
最後用易讀性高的表格顯示
下一篇文章會繼續針對資料分析的語法學習